제출 #652817

#제출 시각아이디문제언어결과실행 시간메모리
652817XCAC197함박 스테이크 (JOI20_hamburg)C++14
21 / 100
3072 ms24604 KiB
#include<bits/stdc++.h> using namespace std; #define int long long #define N 200100 #define K 4 #define M 10 struct rec{ int x1,x2,y1,y2; friend rec operator^(const rec&x,const rec&y){ return {max(x.x1,y.x1),min(x.x2,y.x2),max(x.y1,y.y1),min(x.y2,y.y2)}; } int area(){ if(x1>x2||y1>y2){return 0;} return (x2-x1+1)*(y2-y1+1); } }; mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int n,k; rec arr[N],res[K]; rec arr2[N]; vector<int>srt; int weight[N]; bool vis[N]; signed main(){ cin>>n>>k; for(int a=0;a<n;++a){ cin>>arr[a].x1>>arr[a].y1>>arr[a].x2>>arr[a].y2; } for(int a=0;a<n;++a) { weight[a]=1; for (int b = 0; b < M; ++b) { int r2=rng()%n; if((arr[a]^arr[r2]).area()==0){ ++weight[a]; } } } for(int a=0;a<n;++a){ for(int b=0;b<weight[a];++b) { srt.push_back(a); } } while(true){ shuffle(srt.begin(),srt.end(),rng); memset(vis,0,sizeof(vis)); for(int a=0,b=0;a<srt.size()&&b<n;++a){ if(vis[srt[a]]){ continue; } arr2[b]=arr[srt[a]]; vis[srt[a]]=true; ++b; } for(int b=0;b<k;++b){ res[b]=arr2[b]; } bool flag=false; //shrink res for(int a=k;a<n;++a){ pair<double,int>p={0,-1}; for(int b=0;b<k;++b){ p=max(p,{(1.0*(res[b]^arr2[a]).area())/res[b].area(),b}); } res[p.second]=res[p.second]^arr2[a]; if(res[p.second].x1>res[p.second].x2||res[p.second].y1>res[p.second].y2){ flag=true; break; } } if(!flag){ for(int b=0;b<k;++b){ cout<<res[b].x1<<" "<<res[b].y1<<endl; } break; } } }

컴파일 시 표준 에러 (stderr) 메시지

hamburg.cpp: In function 'int main()':
hamburg.cpp:50:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   50 |         for(int a=0,b=0;a<srt.size()&&b<n;++a){
      |                         ~^~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...