Submission #1113704

#TimeUsernameProblemLanguageResultExecution timeMemory
1113704thelegendary08Fire (BOI24_fire)C++17
0 / 100
2 ms848 KiB
#include<bits/stdc++.h> #define pb push_back #define int long long #define vi vector<int> #define vvi vector<vector<int>> #define pii pair<int, int> #define vpii vector<pair<int, int>> #define vc vector<char> #define vb vector<bool> #define mii map<int,int> #define f0r(i,n) for(int i=0;i<n;i++) #define FOR(i,k,n) for(int i=k;i<n;i++) #define all(v) (v).begin(),(v).end() #define rall(v) (v).rbegin(),(v).rend() #define in(a) int a; cin>>a #define in2(a,b) int a,b; cin>>a>>b #define in3(a,b,c) int a,b,c; cin>>a>>b>>c #define in4(a,b,c,d) int a,b,c,d; cin>>a>>b>>c>>d #define vin(v,n); vi v(n); f0r(i,n){cin>>v[i];} #define out(a) cout<<a<<'\n' #define out2(a,b) cout<<a<<' '<<b<<'\n' #define out3(a,b,c) cout<<a<<' '<<b<<' '<<c<<'\n' #define out4(a,b,c,d) cout<<a<<' '<<b<<' '<<c<<' '<<d<<'\n' #define vout(v) for(auto u : v){cout<<u<<' ';} cout<<'\n' #define dout(a) cout<<a<<' '<<#a<<'\n' #define dout2(a,b) cout<<a<<' '<<#a<<' '<<b<<' '<<#b<<'\n' #define yn(x); if(x){cout<<"YES"<<'\n';}else{cout<<"NO"<<'\n';} const int leg = 1e9 + 7; const int mod = 998244353; using namespace std; signed main(){ ios::sync_with_stdio(false); cin.tie(NULL); //ifstream cin(".in"); //ofstream cout(".out"); in2(n,m); vpii v; f0r(i,n){ in2(a,b); v.pb({a,b}); } vpii normals; vpii overnights; f0r(i,n){ if(v[i].first > v[i].second){ overnights.pb(v[i]); } else normals.pb(v[i]); } vi stimes; f0r(i, normals.size()){ stimes.pb(normals[i].first); } sort(stimes.begin(), stimes.end()); mii ends; mii nxt; f0r(i, normals.size()){ auto it = upper_bound(all(stimes), normals[i].second) - 1; int nx = *it; nxt[normals[i].first] = max(nxt[normals[i].first], nx); } f0r(i, normals.size()){ ends[normals[i].first] = max(ends[normals[i].first], normals[i].second); } f0r(i, normals.size()){ //dout2(normals[i].first, nxt[normals[i].first]); //out2(normals[i].first, ends[normals[i].first]); } vector<mii>jmp(18); f0r(i, normals.size()){ jmp[0][normals[i].first] = nxt[normals[i].first]; } FOR(i, 1, 18){ f0r(j, normals.size()){ jmp[i][normals[j].first] = jmp[i-1][jmp[i-1][normals[j].first]]; } } //take each overnight as a start, if there are none return -1 int ans = 4e18; f0r(i, overnights.size()){ int l = overnights[i].second; int r = overnights[i].first; auto it = upper_bound(all(stimes), l) - 1; int nx = *it; int curans = 1; //dout(nx); if(nx >= l){ int mn = 0; int cur = nx; if(ends[cur] >= r){ curans++; ans = min(ans, curans); } else{ for(int i = 17; i>=0; i--){ if(cur < r && ends[jmp[i][cur]] < r){ cur = jmp[i][cur]; mn += (1<<i); } } //dout2(cur, mn); curans += mn+2; if(ends[nxt[cur]] >= r)ans = min(ans, curans); } } } if(ans == 4e18)out(-1); else out(ans); }

Compilation message (stderr)

Main.cpp: In function 'int main()':
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   51 |  f0r(i, normals.size()){
      |      ~~~~~~~~~~~~~~~~~         
Main.cpp:51:2: note: in expansion of macro 'f0r'
   51 |  f0r(i, normals.size()){
      |  ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   57 |  f0r(i, normals.size()){
      |      ~~~~~~~~~~~~~~~~~         
Main.cpp:57:2: note: in expansion of macro 'f0r'
   57 |  f0r(i, normals.size()){
      |  ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   63 |  f0r(i, normals.size()){
      |      ~~~~~~~~~~~~~~~~~         
Main.cpp:63:2: note: in expansion of macro 'f0r'
   63 |  f0r(i, normals.size()){
      |  ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   66 |  f0r(i, normals.size()){
      |      ~~~~~~~~~~~~~~~~~         
Main.cpp:66:2: note: in expansion of macro 'f0r'
   66 |  f0r(i, normals.size()){
      |  ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   71 |  f0r(i, normals.size()){
      |      ~~~~~~~~~~~~~~~~~         
Main.cpp:71:2: note: in expansion of macro 'f0r'
   71 |  f0r(i, normals.size()){
      |  ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   75 |   f0r(j, normals.size()){
      |       ~~~~~~~~~~~~~~~~~        
Main.cpp:75:3: note: in expansion of macro 'f0r'
   75 |   f0r(j, normals.size()){
      |   ^~~
Main.cpp:11:31: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<std::pair<long long int, long long int> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   11 | #define f0r(i,n) for(int i=0;i<n;i++)
......
   81 |  f0r(i, overnights.size()){
      |      ~~~~~~~~~~~~~~~~~~~~      
Main.cpp:81:2: note: in expansion of macro 'f0r'
   81 |  f0r(i, overnights.size()){
      |  ^~~
#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...