1 solutions
-
0
Guest MOD
-
1
/* #include<bits/stdc++.h> using namespace std; int n,m,q,a[1005][1005],b[2005],tot; bool cmp(int x,int y){return x>y;} int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m>>q; for(int i=1; i<=n; i++) for(int j=1; j<=m; j++) cin>>a[i][j]; for(int i=1; i<=q; i++) { int x,y,k,tot=0; cin>>x>>y>>k; for(int o=1;o<=n;o++) b[++tot]=a[o][y]; for(int o=1; o<=m; o++) if(o!=y)b[++tot]=a[x][o]; nth_element(b+1,b+k,b+1+tot,cmp); cout<<b[k]<<endl; } return 0; } */ /*70分(nth_element())*/ /* #include<bits/stdc++.h> using namespace std; int n,m,a[2005][2005],b[100005],q; int li[2005][2005],co[2005][2005]; bool cmp(int x,int y) {return x>y;} int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m>>q; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) li[i][j]=a[i][j]; for(int i=1;i<=n;i++) sort(li[i]+1,li[i]+1+m,cmp); for(int j=1;j<=m;j++) for(int i=1;i<=n;i++) co[j][i]=a[i][j]; for(int i=1;i<=m;i++) sort(co[i]+1,co[i]+1+n,cmp); for(int i=1;i<=q;i++) { int tot=0; int x,y,k; cin>>x>>y>>k; int nl=1,nr=1; while(nl<=n&&nr<=m) { if(co[y][nl]>li[x][nr]) b[++tot]=co[y][nl],nl++; else b[++tot]=li[x][nr],nr++; } while(nl<=n) b[++tot]=co[y][nl],nl++; while(nr<=m) b[++tot]=li[x][nr],nr++; int flag=0; for(int ii=1;ii<k;ii++) if(b[ii]==b[ii+1]) flag=1; if(flag) k++; cout<<b[k]<<endl; } return 0; } */ /*100分(归并排序)*/ /* #include<bits/stdc++.h> using namespace std; int n,m,a[1005][1005],b[1005][1005],q,x[100005],y[100005],k[100005],r[10005],o=0; int li[1005][1005],co[1005][1005]; bool cmp(int x,int y) {return x>y;} int main() { ios::sync_with_stdio(0);cin.tie(0);cout.tie(0); cin>>n>>m>>q; for(int i=1;i<=n;i++) for(int j=1; j<=m; j++) cin>>a[i][j]; for(int i=1;i<=q;i++) cin>>x[i]>>y[i]>>k[i]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) li[i][j]=a[i][j]; for(int i=1;i<=n;i++) sort(li[i]+1,li[i]+1+m,cmp); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) co[i][j]=a[j][i]; for(int i=1;i<=m;i++) sort(co[i]+1,co[i]+1+n,cmp); for(int i=1;i<=q;i++) { int w,g; for(g=1,w=1;g<=m,w<=n;) { if(li[x[i]][g]>co[y[i]][w]) { r[++o]=li[x[i]][g]; g++; } else if(li[x[i]][g]<co[y[i]][w]) { r[++o]=co[y[i]][w]; w++; } else { r[++o]=co[y[i]][w]; w++; } } while(w<=n) { r[++o]=co[y[i]][w]; w++; } while(g<=m) { r[++o]=li[x[i]][g]; g++; } for(int ii=1; ii<k[i]; ii++) if(r[ii]==r[ii+1]) k[i]++; cout<<r[k[i]]<<endl; r[10005]= {0}; o=0; } return 0; } */ /*100分(归并排序) again*/ #include<bits/stdc++.h> using namespace std; int n,m,q; int a[1005][1005],b[200005],tot=0; int li[1005][1005],co[1005][1005]; bool check(int x,int y,int k,int s) { int cnt=0; int l=0,r=m,ans1=0,ans2=0; while(l<=r) { int mid=(l+r)>>1; if(li[x][mid]>=s||mid==0) ans1=mid,l=mid+1; else r=mid-1; } l=0,r=n; while(l<=r) { int mid=(l+r)>>1; if(co[y][mid]>=s||mid==0) ans2=mid,l=mid+1; else r=mid-1; } cnt=ans1+ans2; if(a[x][y]>=s) cnt--; return cnt>=k; } bool cmp(int x,int y) { return x>y; } int main() { cin>>n>>m>>q; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) cin>>a[i][j]; for(int i=1;i<=n;i++) for(int j=1;j<=m;j++) li[i][j]=a[i][j]; for(int i=1;i<=n;i++) sort(li[i]+1,li[i]+1+m,cmp); for(int i=1;i<=m;i++) for(int j=1;j<=n;j++) co[i][j]=a[j][i]; for(int i=1;i<=m;i++) sort(co[i]+1,co[i]+1+n,cmp); while(q--) { int x,y,k,ans=0; cin>>x>>y>>k; int l=1,r=n*m; while(l<=r) { int mid=(l+r)>>1; if(check(x,y,k,mid)) ans=mid,l=mid+1; else r=mid-1; } cout<<ans<<endl; } return 0; } /*(二分) */
Information
- ID
- 551
- Time
- 2500ms
- Memory
- 256MiB
- Difficulty
- 9
- Tags
- (None)
- # Submissions
- 87
- Accepted
- 10
- Uploaded By