제출 #560524

#제출 시각아이디문제언어결과실행 시간메모리
560524Sergio_2357말 (IOI15_horses)C++17
17 / 100
181 ms70524 KiB
#include "horses.h" #include <bits/stdc++.h> using namespace std; const long long mod = 1e9 + 7; struct range { public: long long m, mbh, x, y; range() { m = 1; mbh = 0; } range(int x_, int y_) { x = x_; y = y_; m = x; mbh = (x * y) % mod; } range operator+(range b) { range res; res.m = m * b.m; res.m %= mod; res.mbh = max(mbh, m * b.mbh); res.mbh %= mod; return res; } }; template <class T> struct SegTree { int n; vector<T> v; void rupdate(int i, int l, int r, int idx, T val) { if (r - l == 1) { if (l == idx) v[i] = val; } else { int m = (r - l) / 2 + l; if (idx < m) rupdate(2 * i, l, m, idx, val); else rupdate(2 * i + 1, m, r, idx, val); v[i] = v[2 * i] + v[2 * i + 1]; } } void update(int idx, T val) { rupdate(1, 0, n, idx, val); } T query() { return v[1]; } SegTree() { } SegTree(vector<T> in) { n = 1; while (n < in.size()) n *= 2; v = vector<T>(2 * n + 5); for (int i = 0; i < in.size(); i++) update(i, in[i]); } }; SegTree<range> st; vector<range> vr; int init(int N, int X[], int Y[]) { vr = vector<range>(N); for (int i = 0; i < N; i++) { vr[i] = range(X[i], Y[i]); } //cout << N << endl; st = SegTree<range>(vr); return st.query().mbh; } int updateX(int pos, int val) { vr[pos] = range(val, vr[pos].y); st.update(pos, vr[pos]); return st.query().mbh; } int updateY(int pos, int val) { vr[pos] = range(vr[pos].x, val); st.update(pos, vr[pos]); return st.query().mbh; }

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

horses.cpp: In function 'int init(int, int*, int*)':
horses.cpp:82:23: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   82 |     return st.query().mbh;
      |            ~~~~~~~~~~~^~~
horses.cpp: In function 'int updateX(int, int)':
horses.cpp:87:34: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   87 |     vr[pos] = range(val, vr[pos].y);
horses.cpp:89:23: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   89 |     return st.query().mbh;
      |            ~~~~~~~~~~~^~~
horses.cpp: In function 'int updateY(int, int)':
horses.cpp:94:29: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   94 |     vr[pos] = range(vr[pos].x, val);
horses.cpp:96:23: warning: conversion from 'long long int' to 'int' may change value [-Wconversion]
   96 |     return st.query().mbh;
      |            ~~~~~~~~~~~^~~
horses.cpp: In instantiation of 'SegTree<T>::SegTree(std::vector<_Tp>) [with T = range]':
horses.cpp:81:27:   required from here
horses.cpp:63:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<range, std::allocator<range> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |         while (n < in.size())
      |                ~~^~~~~~~~~~~
horses.cpp:66:27: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<range, std::allocator<range> >::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   66 |         for (int i = 0; i < in.size(); i++)
      |                         ~~^~~~~~~~~~~
#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...