Submission #830844

#TimeUsernameProblemLanguageResultExecution timeMemory
830844exodus_Lightning Rod (NOI18_lightningrod)C++14
44 / 100
2058 ms262056 KiB
#include<bits/stdc++.h> #define ll long long #define fi first #define se second using namespace std; const int nmax = 1e7+7; struct point { int x; int y; int dex; }; bool cmp(point &a, point&b) { return (a.y > b.y); } int par[nmax]; bool soada[nmax] = {false}; int main() { ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0); int N; cin >> N; vector<point>tik(N+1); bool sub1=true; bool sub6=true; int hit=0; int baw=0; for(int i=1; i<=N; i++) par[i]=i; for(int i=0; i<N; i++) { cin >> tik[i].x >> tik[i].y; if(i>0 && tik[i].x!=tik[i-1].x) hit++; if(tik[i].y != 1) sub1=false; if(tik[i].y > 1 || tik[i].x!=i+1) sub6=false; } if(sub1==true) { cout << hit+1 << endl; return 0; } if(sub6==true) { int i=1; while(i<N) { if(tik[i].y==1) { if(tik[i-1].y==0 && soada[i-1]==false) { baw++; } if(i+1<N && tik[i+1].y==0) { baw++; soada[i+1]=true; } } i++; } int cost = N-baw; cout << cost << endl; return 0; } sort(tik.begin(), tik.end(), cmp); for(int i=0; i<N; i++) { tik[i].dex = i+1; } vector<int>dafter; while(!tik.empty()) { dafter.push_back(0); for(int i=1; i<tik.size(); i++) { if(abs(tik[0].x - tik[i].x) <= tik[0].y-tik[i].y) { par[tik[i].dex] = tik[0].dex; //cout << "par[" << tik[i].dex << "] = " << tik[0].dex << endl; dafter.push_back(i); } } int kur = 0; for(int j=0; j<dafter.size(); j++) { //cout << "dafter " << dafter[j] << endl; tik.erase(tik.begin()+dafter[j]-kur); kur++; } dafter.clear(); } int cost = 0; for(int i=1; i<=N; i++) { if(soada[par[i]]==false) { cost++; soada[par[i]]=true; } } cout << cost << endl; return 0; }

Compilation message (stderr)

lightningrod.cpp: In function 'int main()':
lightningrod.cpp:64:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<point>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   64 |         for(int i=1; i<tik.size(); i++) {
      |                      ~^~~~~~~~~~~
lightningrod.cpp:72:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   72 |         for(int j=0; j<dafter.size(); j++) {
      |                      ~^~~~~~~~~~~~~~
#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...